import axios from 'axios'
import { Toast } from 'antd-mobile'
import { getAuthentication, getQuery, subPackageConfig } from './util'
// import qs from 'querystring';

// const ua = navigator.userAgent.toLowerCase();
const env = process.env.REACT_APP_ENV || 'test'
if (env !== 'prd' && window?.VConsole) {
  new window.VConsole()
}
// const debug = true;
// 接口前缀
const BASE_URL_CONFIG = {
  ameng: {
    test: 'http://119.29.249.226:2221' //https://test.aimengtec.com
    // 'dev': "http://47.236.101.167:8881",  //https://test.aimengtec.com
    // 'release':  "https://release.aimengtec.com",
    // 'prd':  "https://www.aimengtec.com",
  },
  ymeng: {
    test: 'http://119.29.249.226:2221'
    // 'dev': "https://testym.aimengtec.com",
    // 'release':  "https://releaseym.aimengtec.com",
    // 'prd':  "https://ym.aimengtec.com",
  }
}
const packageKey = subPackageConfig()?.package_key

const instance = axios.create({
  // baseURL: `${BASE_URL_CONFIG[packageKey][env]}`,
  timeout: 60000
})
// instance.defaults.baseURL = BASE_URL
// 添加一个请求拦截器
instance.interceptors.request.use(
  function (config) {
    const token = getAuthentication('token') || getQuery('token') || sessionStorage.getItem('token')

    console.log(getAuthentication('token'), getQuery('token'), sessionStorage.getItem('token'))

    config.headers = {
      ...config.headers,
      // token: token || 'a25a7813-ef62-48b5-b303-02c7979ab9fb',
      // token: token || '8f464c93-3c8b-4e09-9b7c-22fb9528733e',
      token: 'e09a76f3d63f4995892d193ce7541997c02ccc10',
      platform: 'h5',
      packageChannel: getAuthentication('packageChannel'),
      package: packageKey
    }
    // if (config.url?.includes('v2') || config.url?.includes('core-symbol') || config.url?.includes('contract-information')) {
    //   config.baseURL = '';
    // }
    // 在请求发出之前进行一些操作
    if (config.method === 'get') {
      // 如果是get请求，且params是数组类型如arr=[1,2]，则转换成arr=1&arr=2
      // config.paramsSerializer = function (params) {
      //   return qs.stringify(params);
      // };
    }
    return config
  },
  function (err) {
    // Do something with request error
    return Promise.reject(err)
  }
)
// 添加一个响应拦截器
instance.interceptors.response.use(
  (res) => {
    if (res.data.code === 2) {
      // message.error(`Please login first`);
      // sessionStorage.clear();
      // window.location.href = '#/login';
      console.log('请先登录')
      return Promise.reject(res.data)
    } else {
      if (Number(res.data.code) !== 1) {
        Toast.show({
          content: res.data.message,
          position: 'bottom'
        })
        return Promise.reject({
          ...res.data,
          message: res.data.message
        })
      }
      return res.data
    }
  },
  function (err) {
    //  当出现错误时的回调函数。
    // Do something with response error
    //  统一处理 错误信息处
    Promise.reject(err).catch(function (error) {
      console.log('接口错误', error)
      // 请求已经发出，但是服务器响应返回的状态吗不在2xx的范围内
      if (error.response) {
        // if (error.response.status === 400) {
        //   if (error.response.data === 'already logged in') {
        //     window.location.href = '/';
        //     return;
        //   }
        // }
        // if (error.response.status === 401 && error.response.config.url !== 'session') {
        //   // message.error(`Please login first`);
        //   sessionStorage.clear();
        //   window.location.href = '/login';
        //   return;
        // }
        if (error.response.status === 404) {
          // message.error(`404 not found: ${error.response.request.responseURL}`);
        }
      } else {
        console.log('接口错误')
        // 一些错误是在设置请求的时候触发
        // message.error(error.message || String(error));
      }
    })
    //  返回错误信息！
    return Promise.reject({
      message: '系统错误'
    })
  }
)

export function get(url, params, config) {
  return instance.get(url, { params, ...config }).then()
}

export function post(url, data, config) {
  return instance.post(url, data, config).then()
}
